package com.cb2.algorithm.leetcode;

/**
 * <a href='https://leetcode.cn/problems/unique-number-of-occurrences/'>独一无二的出现次数(Unique Number of Occurrences)</a>
 * <p>给你一个整数数组 arr，如果每个数的出现次数都是独一无二的，就返回 true；否则返回 false。</p>
 *
 * <p>
 * <b>示例：</b>
 * <pre>
 * 示例 1：
 *      输入：arr = [1,2,2,1,1,3]
 *      输出：true
 *      解释：在该数组中，1 出现了 3 次，2 出现了 2 次，3 只出现了 1 次。没有两个数的出现次数相同。
 *
 * 示例 2：
 *      输入：arr = [1,2]
 *      输出：false
 *
 * 示例 3：
 *      输入：arr = [-3,0,1,-3,1,1,1,-3,10,0]
 *      输出：true
 * </pre>
 * </p>
 *
 * <p>
 * <b>提示：</b>
 * <ul>
 *     <li>1 <= arr.length <= 1000</li>
 *     <li>-1000 <= arr[i] <= 1000</li>
 * </ul>
 * </p>
 *
 * @author c2b
 * @since 2025/2/24 16:56
 */
public class LC1207UniqueNumberOfOccurrences_S {
    static class Solution {
        public boolean uniqueOccurrences(int[] arr) {
            int[] cnt = new int[2001];
            for (int num : arr) {
                cnt[num + 1000]++;
            }
            boolean[] flag = new boolean[2001];
            for (int c : cnt) {
                if (c != 0) {
                    if (flag[c]) {
                        return false;
                    }
                    flag[c] = true;
                }
            }
            return true;
        }
    }

    public static void main(String[] args) {
        Solution solution = new Solution();
        System.out.println(solution.uniqueOccurrences(new int[]{1, 2, 2, 1, 1, 3}));
        System.out.println(solution.uniqueOccurrences(new int[]{1, 2}));
        System.out.println(solution.uniqueOccurrences(new int[]{-3, 0, 1, -3, 1, 1, 1, -3, 10, 0}));
    }
}
